package co.com.smart.eagle.client.factory;

import co.com.smart.eagle.client.place.EaglePlaceController;
import co.com.smart.eagle.client.view.CrearAplicacionesView;
import co.com.smart.eagle.client.view.CrearRecursosView;
import co.com.smart.eagle.client.view.CrearRolesView;
import co.com.smart.eagle.client.view.CrearUsuariosView;
import co.com.smart.eagle.client.view.HomeView;
import co.com.smart.eagle.client.view.impl.CrearApplicacionViewImpl;
import co.com.smart.eagle.client.view.impl.CrearRecursosViewImpl;
import co.com.smart.eagle.client.view.impl.CrearRolesViewImpl;
import co.com.smart.eagle.client.view.impl.CrearUsuariosViewImpl;
import co.com.smart.eagle.client.view.impl.HomeViewImpl;

import com.google.gwt.event.shared.SimpleEventBus;
import com.google.gwt.place.shared.PlaceController;
import com.google.web.bindery.event.shared.EventBus;

public class EagleFactoryImpl implements EagleFactory {

	private static final EventBus eventBus = new SimpleEventBus();
	private static final PlaceController placeController = new EaglePlaceController(eventBus);
	private static HomeView homeView;
	private static CrearUsuariosView crearUsuariosView;
	private static CrearRolesView    crearRolesview;
	private static CrearAplicacionesView crearAplicacionesView;
	private static CrearRecursosView crearRecursosView;

	@Override
	public EventBus getEventBus() {
		return eventBus;
	}

	@Override
	public PlaceController getPlaceController() {
		return placeController;
	}

	@Override
	public HomeView getHomeView() {
		if (homeView == null) {
			homeView = new HomeViewImpl();
		}
		return homeView;
	}

	@Override
	public CrearUsuariosView getCrearUsuariosView() {
		if (crearUsuariosView == null) {
			crearUsuariosView = new CrearUsuariosViewImpl();
		}
		return crearUsuariosView;
	}

	@Override
	public CrearRolesView getCrearRolesView() {
		if(crearRolesview == null){
			crearRolesview = new CrearRolesViewImpl();
		}
		
		return crearRolesview;
	}

	@Override
	public CrearAplicacionesView getCrearAplicacionesView() {
		if(crearAplicacionesView == null){
			crearAplicacionesView = new CrearApplicacionViewImpl();
		}
		return crearAplicacionesView;
	}
	
	@Override
	public CrearRecursosView getCrearRecursosView() {
		if(crearRecursosView == null){
			crearRecursosView = new CrearRecursosViewImpl();
		}
		return crearRecursosView;
	}

}
